package Day20.Predicate;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:Day20.Predicate
 * @Author:hyhWTX
 * @ClassName:Demo03Predicate_or
 * @CreateTime:2022年-10月-02日 17:33
 * @Description: TODO (一句话描述以下该类的功能)
 */

import java.util.function.Predicate;

/**
 *  需求:判断一个字符串,有两个判断的条件
 *   1.更断字符串的长度是善大于5
 *   2.少断字行串中是否包含a
 *   满足一个条件即可,我就可以使用||运算符连接两个条件
 *   Predicate接口中有一个方法aor，表示或者关系，也可以用于连接两个判断条件
 *   default Predicate<T> or(Predicate<? super T> other) {
 *         Objects.requireNonNull(other);
 *         return (t) -> test(t) || other.test(t);
 *     }
 *
 * 方法内部的两个判断条件使用的是两个或运算符连接起来的
 */

public class Demo03Predicate_or {
    /**
     * 定义一个方法：方法的参部，传递一个字符串
     * 传递两个Predicate接口
     * 1.一个用于判断字符串的长度是否大于5
     * 2.一个用于判断字符串中是否包含a
     * 注意：有一个条件满足即可
     */
    public static boolean checkString(String s, Predicate<String> pre1, Predicate<String> pre2) {
//        return pre1.test(s) || pre2.test(s);
        return pre1.or(pre2).test(s);
    }
    public static void main(String[] args) {
        //定义一字符串
        String s = "AHICFJKANSMAK";
        //调用checkString方法,并且传递两个Lambda表达式
        boolean b1 = checkString(s, (String s1) -> {
            return s1.length() > 5;
        }, (String s2) -> {
            return s2.contains("a");
        });
        System.out.println(b1);
    }
}
